\documentclass[12pt]{article} % use larger type; default would be 10pt
\usepackage{anysize}
\marginsize{1.5cm}{1.5cm}{1.5cm}{1.5cm}
%\usepackage[latin1] {inputenc}
\usepackage[utf8]{inputenc} % set input encoding (not needed with XeLaTeX)
\usepackage[T1]{fontenc}
\usepackage{indentfirst}
\usepackage{float}      
\usepackage{fancyvrb}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{subfig}
\usepackage{url}
\usepackage{sidecap}
\usepackage[T1]{fontenc}
\usepackage[light,math]{iwona}
\usepackage{listings}
\usepackage{color}

\renewcommand{\figurename}{Figura}

\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}

\lstset{frame=tb,
  language=C,
  numbers=left,
  numberstyle=\scriptsize\color{gray},
  numbersep=5pt,
  columns=flexible,
  basicstyle={\small},
  commentstyle=\color{blue},
}
\usepackage{titling}
\setlength{\droptitle}{-80pt}
 
\author{Alexandre Esselin Botelho - 2007014720\\
Fernanda Caldeira Takahashi - 2007043089\\
Mario Paulo Drumond Lages de Oliveira - 2008015410}
\title{\huge{Laboratório 2}\\\Large{Projeto de Sistemas Embutidos}}
\date{\normalsize{28 de Maio}}
\begin{document}
\maketitle

\section{Tarefa}
Objetivo: Estudar o \textit{kit} de desenvolvimento de botões capacitivos do MSP-430, o \textit{Capacitive Touch BoosterPack}.
 
Especificações: Criar um contador usando os 8 leds laterais do \textit{Capacitive Touch}.
\\O bit menos significativo é aquele próximo à logomarca \textit{430Boost}.
\\O contador dever incrementar quando o botão central do \textit{Capacitive Touch} for incrementado.

\section{Estratégia}
O maior desafio dessa implementação é que os leds do lado direito e esquedo da placa \textit{Capacitive Touch} são multiplexados entre si, ou seja, quando a saída P1.3 (o bit 3 da saída 1) está em nível lógico 1, o lado direito é o lado ativo, e quando está em nível lógico 0 são os botões do lado esquerdo que obedecem a lógica.

A solução para isso foi realizar um rápido chaveamento entre esses dois estados da saída 1.3 para dar a impressão que os leds de ambos os lados fiquem acesos ao mesmo tempo. Esse chaveamento, no entanto, não pode ser tão rápido a pondo de atrapalhar o \textit{delay} que funciona como debouncer para o botão. Isso significa que deve haver um pequeno \textit{delay} durante o \textit{loop} principal da aplicação para que cada toque no botão seja considerado como apenas um toque e não vários toques simultâneos.

A outra parte da implementação é a capacidade do ``contar''. O contador utilizado foi um simples \textbf{unsigned int}, que é incrementado de 1 sempre que há um toque no botão. Para transformar esse número em um binário de 8 bits, basta tirar o seu \textit{mod 2} para o bit menos significativo; então o \textit{mod 2} do valor do contador dividido por 2 para o segundo bit; depois o o \textit{mod 2} do valor da metade do contador dividido por 2 para o terceiro; assim sucessivamente até obter o nível (0 ou 1) dos 8 bits.

\section{Código}

\lstinputlisting{main.c}

\section{Testes e Resultados}

\begin{figure}[hbtp]
  \centering
  \subfloat[Contador até 4]{\label{fig:ach}\includegraphics[width=0.4\textwidth]{4.jpg}}
  \subfloat[Contador até 21]{\label{fig:exp}\includegraphics[width=0.4\textwidth]{21.jpg}}
  \label{fig:applet}\caption{Teste do Algoritmo no Kit}
\end{figure}

\section*{Referências}
Notas de aula: \emph{C Code for Eight-bit MCUs}

Datasheet: \emph{430BOOST-SENSE1 - Capacitive Touch
BoosterPack for the LaunchPad,  \url{http://www.ti.com/lit/ug/slau337a/slau337a.pdf}}

\end{document}

